﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using MS.InformationManagement.Presenter.Support;
using MS.InformationManagement.Presenter.SolicitudAnulacion;
using MS.InformationManagement.Support.Constants;
using MS.InformationManagement.Support;
using MS.InformationManagement.DAL.DocumentCenter;


namespace MS.InformationManagement.WP.DocumentCenter.SolicitudAnulacionesWP
{

    public partial class SolicitudAnulacionesWPUserControl : BaseControl, ISolicitudAnulacionView
    {
        #region Fields

        SolicitudAnulacionPresenter _presenter;

        #endregion

        #region Properties

        public string IdRadicado { get; set; }
        public Guid SourceList
        {
            get { return new Guid(Page.Request.QueryString["lstID"]); }
        }
        public Radicado CurrentRadicado { get; set; }
        public string Observaciones { get; set; }
        public bool EnviarSolicitudResult { get; set; }
        public int CurrentId
        {
            get
            {
                if (string.IsNullOrEmpty(Page.Request.QueryString["itemsID"]))
                    return 0;
                else
                    return int.Parse(Page.Request.QueryString["itemsID"].ToString().Split('|')[0]);
            }
        }

        #endregion

        #region Form Events

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            Page.RegisterAjaxLoaderPlugin();
            _presenter = new SolicitudAnulacionPresenter(this);
            txtBuscar.Required(ExceptionConstants.ERROR_CAMPO_NULO, "ValBtnSearch", AjaxControlToolkit.ValidatorCalloutPosition.BottomRight);
            txtObservaciones.Required(ExceptionConstants.ERROR_CAMPO_NULO, "ValBtnEnviar", AjaxControlToolkit.ValidatorCalloutPosition.BottomRight);
            btnSearch.AddLoader();
            btnEnviar.AddLoader();            
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (CurrentId != 0)
            {
                _presenter.GetIDRadicado();
            }
            
        }

        protected void Action_Search(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtBuscar.Text))
            {
                IdRadicado = txtBuscar.Text;
                _presenter.RequestIdInterno();
            }
            else
            {
                this.Page.Response.Write("<script type='text/javascript'>alert('No se encontraron resultados para sus criterios de busqueda','')</script>");
            }
        }

        protected void Action_Enviar(object sender, EventArgs e)
        {
            Observaciones = txtObservaciones.Text;
            IdRadicado = txtBuscar.Text;
            _presenter.UpdateSolicitudAnulacion();
        }

        protected void Action_Cancelar(object sender, EventArgs e)
        {
            this.CloseWindow();
        }

        #endregion

        #region Implemented Methods

        public void RequestIdInternoSuccess()
        {
            btnEnviar.Enabled = false;
            if (CurrentRadicado != null)
            {
                if (CurrentRadicado.TipoRadicado != GlobalConstants.METADATA_TERM_TIPO_RADICADO_ENTRADA) 
                {
                    if (CurrentRadicado.Status.Label != GlobalConstants.METADATA_TERM_STATUS_SOLICITUD_ANULAR && CurrentRadicado.Status.Label != GlobalConstants.METADATA_TERM_STATUS_ANULADO)
                    {
                        divControlsAnulacion.Visible = true;
                        txtIdRadicado.Text = CurrentRadicado.DocumentIDValue;
                        txtFechaCreacion.Text = CurrentRadicado.Created.ToShortDateString();
                        txtASunto.Text = CurrentRadicado.Asunto;
                        txtTipoDocumento.Text = CurrentRadicado.TipoDocumento;
                        txtRemitente.Text = CurrentRadicado.RemitenteDestinatario;
                        btnEnviar.Enabled = true;
                    }
                    else
                    {
                        
                        this.HandleWarning("El radicado se encuentra en proceso de anulación.");
                    }   
                }
                else
                {
                    this.HandleWarning("Los radicados de Entrada no se pueden anular.");
                }
            }
            else
            {
                this.HandleWarning("No se encontraton resultados");
            }
        }

        public void EnviarSolicitudSuccess()
        {
            if (EnviarSolicitudResult == true)
            {

                this._ShowAlertAndClose("Su solicitud ha sido registrada");
            }
            else
            {
                btnCancelar.Enabled = false;
                btnEnviar.Enabled = false;
                btnSearch.Enabled = false;
                this._ShowAlertAndClose("Ha ocurrido un error al ingresar su solicitud");
            }


        }

        public void GetIdByItemSuccess()
        {
            if (!string.IsNullOrEmpty(IdRadicado))
            {
                txtBuscar.Text = IdRadicado;
            }
            else
            {
                this.HandleWarning("El radicado se encuentra en proceso de anulación.");
                btnEnviar.Enabled = false;
            }
        }

        #endregion


    }
}
